package com.lqk.builder.improve;

/**
 * @author lqk
 * @date 2021/12/2 13:57
 *
 * 建造者模式的四个角色
 * 1) Product（产品角色）： 一个具体的产品对象。
 * 2) Builder（抽象建造者）： 创建一个Product对象的各个部件指定的 接口/抽象类。
 * 3) ConcreteBuilder（具体建造者）： 实现接口，构建和装配各个部件。
 * 4) Director（指挥者）： 构建一个使用Builder接口的对象。它主要是用于创建一个
 * 复杂的对象。它主要有两个作用，一是：隔离了客户与对象的生产过程，二是：
 * 负责控制产品对象的生产过程。
 *
 * 抽象的建造者
 */
public abstract class HouseBuilder {
    House house = new House();

    // 建造流程（抽象）
    public abstract void buildBasic();
        public abstract void buildWalls();
        public abstract void roofed();

        // 建造房子,返回房子
        public House buildHouse(){
            return house;
    }
}
